package org.guys.magic.util;


/**
 * 类型转换操作工具类
 */
public final class CastUtil {
    /**
     * 转为 String 型，默认值为空字符
     * @param o
     * @return
     */
    public static String castString(Object o){
        return castString(o,"");
    }

    /**
     * 转为 String 型，可以设置默认值
     * @param o
     * @param defaultValue
     * @return
     */
    public static String castString(Object o,String defaultValue){
        return o!=null ? String.valueOf(o) : defaultValue;
    }

    /**
     * 转为 double型，默认为0
     * @param o
     * @return
     */
    public static double castDouble(Object o){
        return castDouble(o,0);
    }

    /**
     * 转为 double 型， 可以设置默认值
     * @param o
     * @param defaultValue
     * @return
     */
    public static double castDouble(Object o,double defaultValue){
        double doubleValue = defaultValue;
        if (o!=null){
            String strValue = castString(o);
            if(StringUtil.isNotEmpty(strValue)){
                try {
                    doubleValue = Double.parseDouble(strValue);
                }catch (NumberFormatException e){
                    doubleValue = defaultValue;
                }
            }

        }
        return doubleValue;
    }

    /**
     * 转为 int 型，默认为0
     * @param o
     * @return
     */
    public static int castInt(Object o){
        return castInt(o,0);
    }

    /**
     * 转为 int 型，可以设置默认值
     * @param o
     * @param defaultValue
     * @return
     */
    public static int castInt(Object o,int defaultValue){
        int intValue = defaultValue;
        if(o!=null){
            String strValue = castString(o);
            if(StringUtil.isNotEmpty(strValue)){
                try {
                    intValue = Integer.parseInt(strValue);
                }catch (NumberFormatException e){
                    intValue = defaultValue;
                }
            }
        }
        return intValue;
    }

    /**
     * 转为 long 型，默认为0
     * @param o
     * @return
     */
    public static long castLong(Object o){
       return castLong(o,0);
    }

    /**
     * 转为 long 型，可以设置默认值
     * @param o
     * @param defaultValue
     * @return
     */
    public static long castLong(Object o,long defaultValue){
        long longValue = defaultValue;
        if (o!=null){
            String strValue = castString(o);
            if(StringUtil.isNotEmpty(strValue)){
                try {
                    longValue = Long.parseLong(strValue);
                }catch (NumberFormatException e){
                    longValue = defaultValue;
                }
            }
        }
        return longValue;
    }

    /**
     * 转为 boolean型，默认为false
     * @param o
     * @return
     */
    public static boolean castBoolean(Object o){
        return castBoolean(o,false);
    }

    /**
     * 转为 boolean 型，可以设置默认值
     * @param o
     * @param defaultValue
     * @return
     */
    public static boolean castBoolean(Object o,boolean defaultValue){
        boolean boolValue = defaultValue;
        if (o!=null){
            boolValue = Boolean.parseBoolean(castString(o));
        }
        return boolValue;
    }
}
